From: Glenn Morris Date: Fri, 16 Mar 2012 01:10:46 +0000 (-0400) Subject: calendar-insert-at-column small fix for bug#10978 X-Git-Tag: archive/raspbian/1%29.2+1-2+rpi1^2~5^2~2326^2~2761^2~19 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=c7e73d5177c6b51d8453830b6400090cc1a052df;p=emacs.git calendar-insert-at-column small fix for bug#10978 * lisp/calendar/calendar.el (calendar-insert-at-column): Handle non-unit-width characters a bit better. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 427d7d87979..1e1f02f2cd7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2012-03-16 Glenn Morris + + * calendar/calendar.el (calendar-insert-at-column): + Handle non-unit-width characters a bit better. (Bug#10978) + 2012-03-15 Chong Yidong * emacs-lisp/ring.el (ring-extend): New function. diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el index b09167ea49b..d9ec27b4f88 100644 --- a/lisp/calendar/calendar.el +++ b/lisp/calendar/calendar.el @@ -1424,16 +1424,24 @@ Optional integers MON and YR are used instead of today's date." "Move to column INDENT, adding spaces as needed. Inserts STRING so that it ends at INDENT. STRING is either a literal string, or a sexp to evaluate to return such. Truncates -STRING to length TRUNCATE, ensure a trailing space." +STRING to length TRUNCATE, and ensures a trailing space." (if (not (ignore-errors (stringp (setq string (eval string))))) (calendar-move-to-column indent) - (if (> (length string) truncate) - (setq string (substring string 0 truncate))) + (if (> (string-width string) truncate) + (setq string (truncate-string-to-width string truncate))) (or (string-match " $" string) - (if (= (length string) truncate) - (aset string (1- truncate) ?\s) - (setq string (concat string " ")))) - (calendar-move-to-column (- indent (length string))) + (setq string (concat (if (= (string-width string) truncate) + (substring string 0 -1) + string) + ;; Avoid inserting text properties unless + ;; we have to (ie, non-unit-width chars). + ;; This is by no means essential. + (if (= (string-width string) (length string)) + " " + ;; Cribbed from buff-menu.el. + (propertize + " " 'display `(space :align-to ,indent)))))) + (calendar-move-to-column (- indent (string-width string))) (insert string))) (defun calendar-generate-month (month year indent)